package RRHH_Modelo;

import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class RHH_CREDITO_FISCAL 
{
    private Double ID_USUARIO;
    private Double DEBITO;
    private Double CREDITO;
    private Double ID;
    private Conexion con = null;

    public RHH_CREDITO_FISCAL(Conexion con)
    {
        this.con=con;
    }

    public RHH_CREDITO_FISCAL(Double ID_USUARIO, Double DEBITO, Double CREDITO, Double ID)
    {
        this.ID_USUARIO = ID_USUARIO;
        this.DEBITO = DEBITO;
        this.CREDITO = CREDITO;
        this.ID = ID;
    }

    public boolean Insertar() throws SQLException 
    {
        String consulta = "insert into BROKER.RHH_CREDITO_FISCAL(ID_USUARIO, DEBITO, CREDITO, ID) VALUES (" + ID_USUARIO + "," + DEBITO + "," + CREDITO + ",0)";
        con.EjecutarSentencia(consulta);
        return true;
    }

    public boolean EliminarXid() throws SQLException 
    {
        String consulta = "delete from BROKER.RHH_CREDITO_FISCAL where ID= " + getID();
        con.EjecutarSentencia(consulta);
        return true;
    }

    public List<RHH_CREDITO_FISCAL> Todos() throws SQLException 
    {
        String consulta = "select * from BROKER.RHH_CREDITO_FISCAL";
        ResultSet rs = con.EjecutarConsulta(consulta);
        return Cargar(rs);
    }
    
    public double MontoActual(int id_usuario) throws SQLException
    {
        String consulta = "SELECT (sum(RHH_CREDITO_FISCAL.CREDITO) - sum(RHH_CREDITO_FISCAL.DEBITO)) AS MONTO_ACTUAL\n" +
                            "  FROM BROKER.RHH_CREDITO_FISCAL\n" +
                            " WHERE (RHH_CREDITO_FISCAL.ID_USUARIO = "+id_usuario+")";
        ResultSet rs = con.EjecutarConsulta(consulta);
        if(rs.next())
        {
            double credito = rs.getDouble("MONTO_ACTUAL");
            if(credito>=0)
                return credito;
            else
                return 0;
        }            
        else
            return 0;
    }

    public List<RHH_CREDITO_FISCAL> Cargar(ResultSet rs) throws SQLException 
    {
            List<RHH_CREDITO_FISCAL> lista = new ArrayList<>();
            while (rs.next()) {
                RHH_CREDITO_FISCAL objeto = new RHH_CREDITO_FISCAL(con);
                objeto.setID_USUARIO(rs.getDouble("ID_USUARIO"));
                objeto.setDEBITO(rs.getDouble("DEBITO"));
                objeto.setCREDITO(rs.getDouble("CREDITO"));
                objeto.setID(rs.getDouble("ID"));
                lista.add(objeto);
            }
            return lista;
    }

    public double getID_USUARIO() {
        return ID_USUARIO;
    }

    public void setID_USUARIO(double ID_USUARIO) {
        this.ID_USUARIO = ID_USUARIO;
    }

    public double getDEBITO() {
        return DEBITO;
    }

    public void setDEBITO(double DEBITO) {
        this.DEBITO = DEBITO;
    }

    public double getCREDITO() {
        return CREDITO;
    }

    public void setCREDITO(double CREDITO) {
        this.CREDITO = CREDITO;
    }
    
    public double getID() {
        return ID;
    }

    public void setID(double ID) {
        this.ID = ID;
    }

    public Conexion getCon() {
        return this.con;
    }

    public void setCon(Conexion con) {
        this.con = con;
    }
}
